home *** CD-ROM | disk | FTP | other *** search
/ Freelog 45 / Freelog045.iso / Bas / Internet / Trellian / twp103.exe / {app} / Script / script,1.js next >
Text File  |  2003-02-08  |  13KB  |  514 lines

  1. /*
  2. The contents of this file are subject to the Mozilla Public License
  3. Version 1.1 (the "License"); you may not use this file except in compliance
  4. with the License. You may obtain a copy of the License at
  5. http://www.mozilla.org/MPL/
  6.  
  7. Software distributed under the License is distributed on an "AS IS" basis,
  8. WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
  9. the specific language governing rights and limitations under the License.
  10. */
  11.  
  12. /*
  13. ** Windows API Style Functions
  14. */
  15.  
  16. function SetCapture(x)
  17. {
  18.   x.document.onmouseup = x.onmouseup;
  19.   x.document.onmousedown = x.onmousedown;
  20. }
  21.  
  22. function ReleaseCapture()
  23. {
  24.   document.onmouseup=document.onmousedown=null
  25. }
  26.  
  27. function MessageBox(s){confirm(s)}
  28.  
  29. /*
  30. ** Borland VCL Constants
  31. */
  32.  
  33.  
  34. EmptyStr = ''
  35.  
  36. bsNone=""
  37. bsSingle="outset"
  38. bsRaised="outset"
  39. bsLowered="inset"
  40.  
  41. clWhite="FFFFFF"
  42. clBlack="000000"
  43. clMenu="C0C0C0"
  44. clMenuText="000000"
  45. clBtnFace="C0C0C0"
  46. clBtnShadow="808080"
  47. clCaptionText="FFFFFF"
  48. clActiveCaption="000090"
  49. clWindow=clWhite
  50.  
  51. crDefault="default"
  52.  
  53. taLeftJustify="left"
  54. taCenter="center"
  55. taRightJustify="right"
  56.  
  57.  
  58. function Point(x,y){this.x=x;this.y=y;return this}
  59. function Rect(l,t,r,b){with(this){left=l;top=t;right=r;bottom=b;}return this}
  60.  
  61. function ShowMessage(s){alert(s)}
  62. function UpperCase(s){return s.toUpperCase()}
  63. function LowerCase(s){return s.toLowerCase()}
  64. function IntToStr(s){return s.toString()}
  65. function IntToHex(s){return s.toString(16)}
  66. function StrToInt(s){return parseInt(s)}
  67. function StrToDouble(s){return parseFloat(s)}
  68. function Copy(s,i,c){return s.substring(i,i+c)}
  69. function Length(s){return s.length}
  70. function Random(a){return Math.floor(Math.random()*a+0.9999)}
  71. function Pos(a,b){return b.indexOf(a)}
  72. function Max(a,b){return a>b?a:b}
  73. function Min(a,b){return a<b?a:b}
  74.  
  75. function HTTPEncode(s){return escape(s)}
  76. function HTTPDecode(s){return unescape(s)}
  77.  
  78. function AnsiSameStr(A,B){return A==B}
  79. function AnsiSameText(A,B){return A==B}
  80.  
  81. function ReturnFalse(){return false}
  82. function ReturnTrue(){return true}
  83.  
  84. /*
  85. ** Name: TStringList
  86. ** Desc: Adds VCL style TStringList methods to the standard JavaScript
  87. **       string array.
  88. */
  89. function TStringList(Self)
  90. {
  91.   Self.IndexOf = function(Item)
  92.   {
  93.     for (var i = 0; i < Self.length; i++)
  94.       if (AnsiSameText(Self[i],Item)) return i;
  95.     return -1
  96.   }
  97.   Self.Values = function(Item, Def)
  98.   {
  99.     for (var i = 0; i < Self.length; i++)
  100.     {
  101.       var s = Self[i], j = s.indexOf('=')
  102.       if (AnsiSameText(s.substring(0, j), Item)) return s.substring(j + 1, s.length)
  103.     }
  104.     return Def
  105.   }
  106.   return Self
  107. }
  108.  
  109. /*
  110. ** Name: CmdLine
  111. ** Desc: Returns the command line string that was sent to the page via the url
  112. */
  113. function CmdLine()
  114. {
  115.   var s=unescape(document.location.search)
  116.   return s.substring(s.indexOf('?')+1,s.length)
  117. }
  118.  
  119. /*
  120. ** Name: ParamStrings
  121. ** Desc: Splits the command line string into a string list
  122. */
  123. function ParamStrings()
  124. {
  125.   return TStringList(CmdLine().split('%'))
  126. }
  127.  
  128. /*
  129. ** Name: StringListValues
  130. ** Desc: Searchs a string list for ini style values
  131. */
  132. function StringListValues(sl,name,def)
  133. {
  134.   for (var i=0;i<sl.length;i++)
  135.   {
  136.     var s=sl[i]
  137.     var j=s.indexOf('=')
  138.     if (s.substring(0,j)==name) return s.substring(j+1,s.length)
  139.   }
  140.   return def
  141. }
  142.  
  143. /*
  144. ** Name: TApplication
  145. ** Desc: The base class for the entire application. Only _one_ application
  146. **       should exist for each document.
  147. */
  148. function TApplication(Self)
  149. {
  150.   Self.SetTitle=function(x){Self.title=x}
  151.  
  152.   document.onselectstart=ReturnFalse
  153.   document.ondragstart=ReturnFalse
  154.  
  155.   window.onerror=function(desc,page,line,chr)
  156.   {
  157.     alert(
  158.      'JavaScript error occurred! \n'+
  159.      'The error was handled by '+
  160.      'a customized error handler.\n'+
  161.      '\nError description: \t'+desc+
  162.      '\nPage address:      \t'+page+
  163.      '\nLine number:       \t'+line
  164.     )
  165.     return true
  166.   }
  167.   return Self
  168. }
  169.  
  170. function MenuCaption(s)
  171. {
  172.   var r=""
  173.   for (var i=0;i<s.length;i++)r+=(s.charAt(i)=='&')?"<U>"+s.charAt(++i)+"</U>":s.charAt(i)
  174.   return r
  175. }
  176.  
  177. function TComponent(Self,Owner)
  178. {
  179.   Self.Owner=Owner
  180.   return Self
  181. }
  182.  
  183. function TAbstractFont(Owner,Self)
  184. {
  185.   TComponent(Self,Owner)
  186.   Self.SetName=function(x){Self.Owner.style.fontFamily=x}
  187.   Self.SetSize=function(x){Self.Owner.style.fontSize=x}
  188.   Self.SetColor=function(x){Self.Owner.style.color=x}
  189.   return Self
  190. }
  191.  
  192. function TFont(Owner)
  193. {
  194.   return TAbstractFont(Owner, new Object())
  195. }
  196.  
  197. function TControl(Self,Owner)
  198. {
  199.   TComponent(Self,Owner)
  200.  
  201.   Self.Font = TFont(Self)
  202.  
  203.   Self.OnClick=function(){}
  204.   Self.OnMouseUp=function(){}
  205.   Self.OnMouseDown=function(){}
  206.   Self.OnMouseMove=function(){}
  207.   Self.OnResize=function(){}
  208.  
  209.   // Redirect the standard events to our new events.
  210.  
  211.   Self.onclick=function(){Self.OnClick()}
  212.   Self.onresize=function(){Self.OnResize()}
  213.  
  214.   Self.SetParent=function(x){(Self.Parent=x).appendChild(Self)}
  215.   Self.SetBorderWidth=function(x){Self.style.borderWidth=Self.BorderWidth=x}
  216.   Self.SetBorderStyle=function(x){Self.style.borderStyle=x}
  217.   Self.SetText=function(x){Self.innerHTML=x}
  218.   Self.GetText=function(){return Self.innerHTML}
  219.   Self.SetVisible=function(x){Self.style.visibility=x?"visible":"hidden"}
  220.   Self.SetEnabled=function(x){Self.disabled=!x}
  221.   Self.Show=function(){Self.SetVisible(true)}
  222.   Self.Hide=function(){Self.SetVisible(false)}
  223.  
  224.   Self.SetOpacity=function(x){Self.style.filter="alpha(opacity="+(Self.Opacity=x)+")"}
  225.   Self.SetCursor=function(x){Self.style.cursor=Self.Cursor=x}
  226.  
  227.   Self.GetLeft=function(){return Self.offsetLeft}
  228.   Self.GetTop=function(){return Self.offsetTop}
  229.   Self.GetWidth=function(){return Self.offsetWidth}
  230.   Self.GetHeight=function(){return Self.offsetHeight}
  231.  
  232.   Self.SetBounds=function(x,y,w,h){with(Self.style){left=x;top=y;width=Max(w,0);height=Max(h,0)}}
  233.  
  234.   Self.SetPos=function(x,y){with(Self){SetBounds(x,y,GetWidth(),GetHeight())}}
  235.   Self.SetSize=function(w,h){with(Self){SetBounds(GetLeft(),GetTop(),w,h)}}
  236.   Self.SetLeft=function(x){with(Self){SetBounds(x,GetTop(),GetWidth(),GetHeight())}}
  237.   Self.SetTop=function(x){with(Self){SetBounds(GetLeft(),x,GetWidth(),GetHeight())}}
  238.   Self.SetWidth=function(x){with(Self){SetBounds(GetLeft(),GetTop(),x,GetHeight())}}
  239.   Self.SetHeight=function(x){with(Self){SetBounds(GetLeft(),GetTop(),GetWidth(),x)}}
  240.   Self.SetRect=function(l,t,r,b){Self.SetBounds(l,t,r-l,b-t)}
  241.  
  242.   Self.GetRight=function(){return Self.GetLeft()+Self.GetWidth()}
  243.   Self.GetBottom=function(){return Self.GetTop()+Self.GetHeight()}
  244.  
  245.   Self.SetName=function(x){Self.name=Self.Name=x}
  246.   Self.SetColor=function(x){Self.style.backgroundColor=Self.Color=x}
  247.  
  248.   Self.ControlCount=function(){return Self.children.length}
  249.   Self.Controls=function(x){return Self.children.item(x)}
  250.  
  251.   Self.FullSize=function(){Self.style.left=Self.style.top="";Self.style.width=Self.style.height="100%"}
  252.   Self.AutoSize=function(){Self.style.width=Self.style.height=""}
  253.  
  254.   Self.Font.SetName("MS Sans Serif");
  255.   Self.Font.SetSize(12);
  256.   // These seem to effect the standard XP style buttons
  257.   //Self.SetBorderWidth(2)
  258.   //Self.SetBorderStyle(bsNone)
  259.  
  260.   return Self;
  261. }
  262.  
  263. function TForm(Self,Owner)
  264. {
  265.   Self=TControl(Self,Owner)
  266.   Self.Close=function(){Self.document.parentWindow.close()}
  267.   Self.GetWidth=function(){return document.all?Self.clientWidth:window.innerWidth}
  268.   Self.GetHeight=function(){return document.all?Self.clientHeight:window.innerHeight}
  269.   return Self
  270. }
  271.  
  272. function TFormCreate(Owner,Options)
  273. {
  274.   return TAbstractForm(window.open("","TForm", Options).document.body, Owner)
  275. }
  276.  
  277. function TWinControl(Self,Owner)
  278. {
  279.   TControl(Self,Owner)
  280.   Self.style.position="absolute"
  281.   Self.style.overflow="hidden"
  282.   Self.SetBounds(20,20,100,100)
  283.   return Self;
  284. }
  285.  
  286. function TWinControlCreate(Owner,TagName,Attributes)
  287. {
  288.   return TWinControl(document.createElement("<" + TagName + " " + Attributes + ">"),Owner)
  289. }
  290.  
  291. function TButtonCreate(Owner)
  292. {
  293.   return TWinControlCreate(Owner,"BUTTON");
  294. }
  295.  
  296. function TMemoCreate(Owner)
  297. {
  298.   return TWinControlCreate(Owner,"TEXTAREA");
  299. }
  300.  
  301. function TMarqueeCreate(Owner)
  302. {
  303.   return TWinControlCreate(Owner,"MARQUEE");
  304. }
  305.  
  306. function TIFrameCreate(Owner)
  307. {
  308.   return TWinControlCreate(Owner,"IFRAME");
  309. }
  310.  
  311. function TTableCreate(Owner)
  312. {
  313.   return TWinControlCreate(Owner,"TABLE");
  314. }
  315.  
  316. function TEditCreate(Owner)
  317. {
  318.   return TWinControlCreate(Owner,"INPUT");
  319. }
  320.  
  321. function TLabeledControlCreate(Self)
  322. {
  323.   Self.Label = TLabelCreate(Self);
  324.  
  325.   Self.TLabeledControlSetParent = Self.SetParent;
  326.   
  327.   Self.SetParent=function(a)
  328.   {
  329.     Self.TLabeledControlSetParent(a);
  330.     Self.Label.SetParent(a);
  331.   }
  332.  
  333.   return Self;
  334. }
  335.  
  336. function TLabeledEditCreate(Owner)
  337. {
  338.   var Self = TLabeledControlCreate(TEditCreate(Owner));
  339.  
  340.   Self._SetBounds = Self.SetBounds;
  341.  
  342.   Self.SetBounds = function(x,y,w,h)
  343.   {
  344.     Self._SetBounds(x,y,w,h);
  345.     Self.Label.SetBounds(x-70,y,70,h);
  346.   }
  347.   return Self;
  348. }
  349.  
  350. function TEditPasswordCreate(Owner)
  351. {
  352.   var Self = TEditCreate(Owner);
  353.   Self.type = "password";
  354.   return Self;
  355. }
  356.  
  357. function TEditFileCreate(Owner)
  358. {
  359.   var Self = TEditCreate(Owner);
  360.   Self.type = "file";
  361.   return Self;
  362. }
  363.  
  364. function TListItemCreate(Owner)
  365. {
  366.   return TWinControlCreate(Owner,"OPTION");
  367. }
  368.  
  369. function TCustomListBox(Self)
  370. {
  371.   Self.AddItem=function(s){with(TListItemCreate(Self)){SetParent(Self);SetText(s);}}
  372.   Self.Count=function(){return Self.childNodes.length;}
  373.   Self.Clear=function(){while(Self.Count()>0) {Self.removeChild(Self.childNodes[0]);}}
  374.   return Self;
  375. }
  376.  
  377. function TComboBoxCreate(Owner)
  378. {
  379.   return TCustomListBox(TWinControlCreate(Owner,"SELECT"))
  380. }
  381.  
  382. function TListBoxCreate(Owner)
  383. {
  384.   return TCustomListBox(TWinControlCreate(Owner,"SELECT","multiple"))
  385. }
  386.  
  387. function TLabelCreate(Owner)
  388. {
  389.   var Self = TTableCreate(Owner)
  390.   Self.TableCell = Self.insertRow(0).insertCell(0)
  391.   Self.SetText=function(x){Self.TableCell.innerHTML=Self.Text=MenuCaption(x)}
  392.   Self.SetAlign=function(x){Self.TableCell.align=x}
  393.   return Self
  394. }
  395.  
  396. function TCheckBoxCreate(Owner)
  397. {
  398.   var Self = TEditCreate(Owner);
  399.   Self.type="checkbox";
  400.   Self.LabelControl = TLabelCreate(Owner);
  401.  
  402.   Self.TCheckBoxSetBounds = Self.SetBounds;
  403.  
  404.   Self.SetBounds = function(x,y,w,h)
  405.   {
  406.     Self.TCheckBoxSetBounds(x,y,h,h);
  407.     Self.LabelControl.SetBounds(x+h,y,w-h,h);
  408.   }
  409.   Self.TCheckBoxSetParent = Self.SetParent;
  410.   Self.SetParent=function(a)
  411.   {
  412.     Self.TCheckBoxSetParent(a);
  413.     Self.LabelControl.SetParent(a);
  414.   }
  415.   Self.SetText=function(s){Self.LabelControl.SetText(s);}
  416.   Self.GetText=function(){return Self.LabelControl.GetText();}
  417.  
  418.   return Self;
  419. }
  420.  
  421. function TRadioButtonCreate(Owner)
  422. {
  423.   var Self = TEditCreate(Owner);
  424.   Self.type="radio";
  425.   Self.LabelControl = TLabelCreate(Owner);
  426.  
  427.   Self.TCheckBoxSetBounds = Self.SetBounds;
  428.  
  429.   Self.SetBounds = function(x,y,w,h)
  430.   {
  431.     Self.TCheckBoxSetBounds(x,y,h,h);
  432.     Self.LabelControl.SetBounds(x+h,y,w-h,h);
  433.   }
  434.   Self.TCheckBoxSetParent = Self.SetParent;
  435.   Self.SetParent=function(a)
  436.   {
  437.     Self.TCheckBoxSetParent(a);
  438.     Self.LabelControl.SetParent(a);
  439.   }
  440.   Self.SetText=function(s){Self.LabelControl.SetText(s);}
  441.   Self.GetText=function(){return Self.LabelControl.GetText();}
  442.   return Self;
  443. }
  444.  
  445. function TPictureCreate(Owner)
  446. {
  447.   var Self = TWinControlCreate(Owner,"IMG")
  448.   Self.SetText=function(){}
  449.   Self.LoadFromFile=function(x){Self.src=Self.Image=x}
  450.   return Self
  451. }
  452.  
  453. function TImageCreate(Owner)
  454. {
  455.   var Self = TPanel(Owner)
  456.   Self.SetBorderWidth(0)
  457.   Self.Picture=TPictureCreate(Owner)
  458.   Self.Picture.FullSize()
  459.   Self.Picture.SetParent(Self)
  460.   return Self;
  461. }
  462.  
  463. function TPanelCreate(Owner)
  464. {
  465.   var Self = TWinControlCreate(Owner,"SPAN")
  466.   Self.SetColor(clBtnFace)
  467.   Self.SetBorderWidth(1)
  468.   Self.SetBorderStyle(bsRaised)
  469.   Self.SetCursor(crDefault)
  470.   return Self
  471. }
  472.  
  473. function TWebBrowserCreate(Owner)
  474. {
  475.   return TWinControlCreate(Owner,"IFRAME")
  476. }
  477.  
  478. function TSpeedButtonCreate(Owner)
  479. {
  480.   var Self = TLabelCreate(Owner)
  481.  
  482.   Self.onmouseenter = function()
  483.   {
  484.     Self.MouseInside=1
  485.     Self.SetBorderStyle(Self.MouseDown?bsLowered:bsRaised);
  486.   }
  487.   Self.onmouseleave = function()
  488.   {
  489.     Self.MouseInside=0
  490.     Self.SetBorderStyle(bsNone);
  491.   }
  492.   Self.onmouseup=function()
  493.   {
  494.     Self.MouseDown=0
  495.     Self.SetBorderStyle(Self.MouseInside?bsRaised:bsNone)
  496.     ReleaseCapture();
  497.   }
  498.   Self.onmousedown=function()
  499.   {
  500.     SetCapture(Self);
  501.     Self.SetBorderStyle(bsLowered)
  502.     Self.MouseDown=1
  503.   }
  504.   Self.SetBorderStyle(bsNone)
  505.   Self.SetBorderWidth(1)
  506.   Self.SetAlign(taCenter)
  507.  
  508.   return Self
  509. }
  510.  
  511. Application = TApplication(document)
  512. MainForm = TForm(Application.body, Application);
  513.  
  514.